package com.catmiao.spark.rdd.operator.transform

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @title: RDD_Operator_01_transform
 * @projectName spark_study
 * @description: TODO
 * @author ChengMiao
 * @date 2024/2/2 11:48
 */
object RDD_Operator_01_transform_par {

  def main(args: Array[String]): Unit = {
    val sparkCon = new SparkConf().setMaster("local[*]").setAppName("rdd")

    val sparkContext = new SparkContext(sparkCon)

    /**
     * 1个分区 按顺序执行  【1，2，3，4】
     * 1. rdd的计算一个分区内的数据是一个一个执行逻辑，只有前一个数据的逻辑全部执行完毕之后，才会执行下一个数据
     *    分区内数据的执行是有序的
     * 2个分区 分区内有序 【1，2】 【3，4】
     * 2. 不同分区数据计算是无序的
     */
    val rdd = sparkContext.makeRDD(List(1, 2, 3, 4),2)

    val mapRdd1 = rdd.map(
      num => {
        println("@@@@@@ " + num)
        num
      }
    )

    val mapRdd2 = mapRdd1.map(
      num => {
        println("&&&&&& " + num)
        num
      }
    )

    val mapRdd3 = mapRdd2.map(
      num => {
        println("$$$$$$$ " + num)
        num
      }
    )

    mapRdd3.collect()


    sparkContext.stop()
  }

}
